// login.ts - 登录角色选择页面
Page({
  data: {
    selectedRole: '', // 选中的角色
    userInfo: null as any // 用户信息
  },

  /**
   * 页面加载
   */
  onLoad() {
    // 页面加载时不做特殊处理
  },

  /**
   * 页面显示时检查登录状态
   */
  onShow() {
    this.checkLoginStatus()
  },


  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    try {
      const userRole = wx.getStorageSync('userRole')
      const userInfo = wx.getStorageSync('userInfo')
      
      // 如果已经登录且选择了角色，直接跳转
      if (userRole && userInfo) {
        console.log('用户已登录，角色:', userRole)
        this.navigateToMainPage(userRole)
        return
      }
    } catch (e) {
      console.log('检查登录状态失败:', e)
    }
  },

  /**
   * 选择角色
   */
  selectRole(e: WechatMiniprogram.BaseEvent) {
    const role = e.currentTarget.dataset.role
    
    this.setData({
      selectedRole: role
    })

    // 震动反馈
    wx.vibrateShort()
    
    console.log('选择角色:', role)
  },

  /**
   * 微信授权登录
   */
  onGetUserInfo(e: WechatMiniprogram.BaseEvent) {
    const userInfo = e.detail.userInfo
    
    if (!userInfo) {
      wx.showToast({
        title: '授权失败',
        icon: 'none'
      })
      return
    }

    if (!this.data.selectedRole) {
      wx.showToast({
        title: '请先选择角色',
        icon: 'none'
      })
      return
    }

    this.completeLogin(userInfo, this.data.selectedRole)
  },


  /**
   * 完成登录流程
   */
  completeLogin(userInfo: any, role: string) {
    wx.showLoading({
      title: '登录中...'
    })

    // 保存用户信息和角色到本地存储
    try {
      wx.setStorageSync('userInfo', userInfo)
      wx.setStorageSync('userRole', role)
      wx.setStorageSync('loginTime', new Date().toISOString())
    } catch (e) {
      console.log('保存用户信息失败:', e)
      wx.hideLoading()
      wx.showToast({
        title: '登录失败',
        icon: 'none'
      })
      return
    }

    // 模拟登录延迟
    setTimeout(() => {
      wx.hideLoading()
      
      const roleNames: Record<string, string> = {
        'user': '用户端',
        'medical': '医护端',
        'driver': '司机端'
      }

      wx.showToast({
        title: `欢迎使用${roleNames[role]}`,
        icon: 'success',
        duration: 1500
      })

      // 跳转到主页面
      setTimeout(() => {
        this.navigateToMainPage(role)
      }, 1500)
    }, 1000)
  },

  /**
   * 跳转到主页面
   */
  navigateToMainPage(role: string) {
    // 根据角色跳转到对应的列表页面
    let targetUrl = '/pages/list-user/list-user'
    
    if (role === 'medical') {
      targetUrl = '/pages/list-medical/list-medical'
    } else if (role === 'driver') {
      targetUrl = '/pages/list-driver/list-driver'
    }
    
    // 重定向到任务列表页面，避免用户返回到登录页
    wx.reLaunch({
      url: targetUrl,
      success: () => {
        console.log(`已跳转到${role}主页面`)
      },
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        })
      }
    })
  },


  /**
   * 紧急求助
   */
  emergencyCall() {
    wx.showModal({
      title: '紧急求助',
      content: '如遇紧急情况，请立即拨打：\n\n🚑 医疗急救：120\n🚒 火警救援：119\n👮 报警求助：110\n\n或使用救援服务申请功能',
      confirmText: '拨打120',
      cancelText: '我知道了',
      success: (res) => {
        if (res.confirm) {
          wx.makePhoneCall({
            phoneNumber: '120',
            fail: () => {
              wx.showToast({
                title: '拨号失败',
                icon: 'none'
              })
            }
          })
        }
      }
    })
  },

  /**
   * 页面分享
   */
  onShareAppMessage() {
    return {
      title: '立体救援 - 陆海空全方位紧急医疗救援',
      path: '/pages/login/login',
      imageUrl: '/images/share-image.jpg'
    }
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    return {
      title: '立体救援 - 为生命安全保驾护航',
      imageUrl: '/images/share-image.jpg'
    }
  }
})
